<?php

class FEmail {
	var $db;
 	var $smarty;	
	public function __construct($db, $smarty) {
		//contructor function
		$this->db = $db;
		$this->smarty = $smarty;
	}
	
	public function send_mail($to, $body, $subject, $fromaddress, $fromname, $attachments=false)
	{
	  $eol="\n";
	  $mime_boundary=md5(time());
	
	  # Common Headers
	  $headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
	  $headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
	  $headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol; // these two to set reply address
	  $headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;
	  $headers .= "X-Mailer: PHP v".phpversion().$eol; // These two to help avoid spam-filters
	
	  # Boundry for marking the split & Multitype Headers
	  $headers .= 'MIME-Version: 1.0'.$eol;
	  $headers .= "Content-Type: multipart/mixed; boundary=\"".$mime_boundary."\"".$eol.$eol;
	
	  # Open the first part of the mail
	  $msg = "--".$mime_boundary.$eol;
	
	  $htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section
	  # Setup for text OR html -
	  $msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol;
	
	  # Text Version
	  $msg .= "--".$htmlalt_mime_boundary.$eol;
	  $msg .= "Content-Type: text/plain; charset=utf-8".$eol;
	  $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
	  $msg .= strip_tags(str_replace("
	", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol;
	
	  # HTML Version
	  $msg .= "--".$htmlalt_mime_boundary.$eol;
	  $msg .= "Content-Type: text/html; charset=utf-8".$eol;
	  $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
	  $msg .= $body.$eol.$eol;
	
	  //close the html/plain text alternate portion
	  $msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;
	
	  if ($attachments !== false)
	  {
		for($i=0; $i < count($attachments); $i++)
		{
		  if (is_file($attachments[$i]["file"]))
		  {
			# File for Attachment
			$file_name = $attachments[$i]["file_name"];
			if ($file_name == "")
					$file_name = substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));
	
			$handle=fopen($attachments[$i]["file"], 'rb');
			$f_contents=fread($handle, filesize($attachments[$i]["file"]));
			$f_contents=chunk_split(base64_encode($f_contents)); //Encode The Data For Transition using base64_encode();
			$f_type=filetype($attachments[$i]["file"]);
			fclose($handle);
	
			# Attachment
			$msg .= "--".$mime_boundary.$eol;
			$msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol; // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
			$msg .= "Content-Transfer-Encoding: base64".$eol;
			$msg .= "Content-Description: ".$file_name.$eol;
			$msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol; // !! This line needs TWO end of lines !! IMPORTANT !!
			$msg .= $f_contents.$eol.$eol;
		  }
		}
	  }
	
	  # Finished
	  $msg .= "--".$mime_boundary."--".$eol.$eol; // finish with two eol's for better security. see Injection.
	
	  # SEND THE EMAIL
	  ini_set(sendmail_from,$fromaddress); // the INI lines are to force the From Address to be used !
	  $mail_sent = mail($to, $subject, $msg, $headers);
	
	  ini_restore(sendmail_from);
	
	  return $mail_sent;
	}
}
?>
